const fs = require('fs');
const path = require('path');
const { getVideoDurationInSeconds } = require('get-video-duration');

// 需要判断时长的大文件夹
// 注意这里的是/ 要么是\\，不能是只有一个\
const dir_path = 'C:\\Users\\liujiaqi\\桌面\\就业准备\\JavaSript面试课';

// 用来存放所有需要判断时长的视频
const video_Array = [];

// 判断文件信息
function files_stat(filepath) {
    // 读取文件夹
    const files = fs.readdirSync(filepath);
    files.forEach(fileName => {
        //  获取文件的绝对路径
        let filePath = path.join(filepath, fileName);
        //根据文件路径获取文件信息
        let stats = fs.statSync(filePath);
        if (stats.isDirectory()) {
            // 如果是文件夹，则递归
            files_stat(filePath);
        }
        // 如果是文件且后缀是MP4 则推入到视频数组中
        else if (stats.isFile() && /^.*\.mp4$/.test(fileName)) {
            video_Array.push(filePath);
        }
    });
}

files_stat(dir_path);
// 判断时长时长
function getTotals(video_Array) {
    let video_ArrayPromises = video_Array.map(video =>
        getVideoDurationInSeconds(video));
    return Promise.all(video_ArrayPromises).then((video_time) => {
        return video_time.reduce((ac, cv) => ac + cv)
    })
}

getTotals(video_Array).then(total_time => {
    // 四舍五入取整
    total_time = Math.round(total_time);
    const hours = parseInt(total_time /3600);
    const minutes = parseInt(total_time % 3600 /60);
    const seconds = total_time % 3600 % 60 ;
    const timeStr = `视频有${hours}小时${minutes}分钟${seconds}秒`;
    console.log(timeStr);
});


